<?xml version="1.0" encoding="UTF-8" ?>
<class name="WebSocketServer" inherits="WebSocketMultiplayerPeer" category="Core" version="3.1">
	<brief_description>
		A WebSocket server implementation
	</brief_description>
	<description>
		This class implements a WebSocket server that can also support the high level multiplayer API.
		After starting the server ([method listen]), you will need to [method NetworkedMultiplayerPeer.poll] it at regular intervals (e.g. inside [method Node._process]). When clients connect, disconnect, or send data, you will receive the appropriate signal.
		Note: This class will not work in HTML5 exports due to browser restrictions.
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="disconnect_peer">
			<return type="void">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="code" type="int" default="1000">
			</argument>
			<argument index="2" name="reason" type="String" default="&quot;&quot;">
			</argument>
			<description>
				Disconnects the peer identified by [code]id[/code] from the server. See [method WebSocketPeer.close] for more info.
			</description>
		</method>
		<method name="get_peer_address" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns the IP address of the given peer.
			</description>
		</method>
		<method name="get_peer_port" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns the remote port of the given peer.
			</description>
		</method>
		<method name="has_peer" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns [code]true[/code] if a peer with the given ID is connected.
			</description>
		</method>
		<method name="is_listening" qualifiers="const">
			<return type="bool">
			</return>
			<description>
				Returns [code]true[/code] if the server is actively listening on a port.
			</description>
		</method>
		<method name="listen">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="port" type="int">
			</argument>
			<argument index="1" name="protocols" type="PoolStringArray" default="PoolStringArray(  )">
			</argument>
			<argument index="2" name="gd_mp_api" type="bool" default="false">
			</argument>
			<description>
				Start listening on the given port.
				You can specify the desired subprotocols via the "protocols" array. If the list empty (default), "binary" will be used.
				You can use this server as a network peer for [MultiplayerAPI] by passing [code]true[/code] as [code]gd_mp_api[/code]. Note: [signal data_received] will not be fired and clients other than Godot will not work in this case.
			</description>
		</method>
		<method name="stop">
			<return type="void">
			</return>
			<description>
				Stop the server and clear its state.
			</description>
		</method>
	</methods>
	<signals>
		<signal name="client_close_request">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="code" type="int">
			</argument>
			<argument index="2" name="reason" type="String">
			</argument>
			<description>
				Emitted when a client requests a clean close. You should keep polling until you get a [signal client_disconnected] signal with the same [code]id[/code] to achieve the clean close. See [method WebSocketPeer.close] for more details.
			</description>
		</signal>
		<signal name="client_connected">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="protocol" type="String">
			</argument>
			<description>
				Emitted when a new client connects. "protocol" will be the sub-protocol agreed with the client.
			</description>
		</signal>
		<signal name="client_disconnected">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="was_clean_close" type="bool">
			</argument>
			<description>
				Emitted when a client disconnects. [code]was_clean_close[/code] will be [code]true[/code] if the connection was shutdown cleanly.
			</description>
		</signal>
		<signal name="data_received">
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Emitted when a new message is received. Note: This signal is NOT emitted when used as high level multiplayer peer.
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
</class>
